The present invention relates to capturing task traces of multiple tasks, and more specifically, to capturing task traces for recent history and stalled tasks.
In computing, a core dump, memory dump, or system dump consists of the recorded state of the working memory of a computer program at a specific time; generally when the program has crashed or otherwise terminated abnormally. However, many software problems are due to stalls or errors that occur a significant time before the dump is obtained.
Capturing traces for tasks by using a trace queue and storing contiguous sequences of commands may be used to simplify debugging or error diagnosis. Wrap-around memory only trace tables are often required for performance reasons. However, these are usually only good for debugging recent events.
Some products have the option of capturing a trace associated with each task. These are useful for debugging problems, which are related to a single task, but cannot generally be used for debugging problems related to task interactions. Task traces are usually very fast as they do not require any locking.
Some products have the option of capturing a global trace of all events in the system. This will allow debugging of task interactions. However, due to the finite size of a trace table, it generally cannot be used for stalled tasks. Since a contiguous global trace is shared between tasks it requires locking to write records and therefore it is slower than a task trace.
Some products have the option of capturing both task traces and global traces. In such cases it is necessary to write two trace records, which performs badly.